

package com.hazelcast.test;

import org.junit.runner.Runner;
import org.junit.runners.model.InitializationError;
import org.junit.runners.parameterized.ParametersRunnerFactory;
import org.junit.runners.parameterized.TestWithParameters;

/**
 * Abstract {@link ParametersRunnerFactory} superclass for {@link HazelcastSerialClassRunner}
 * and {@link HazelcastParallelClassRunner}.
 * <p>
 * See {@link com.hazelcast.test package documentation} for runners overview.
 */
public abstract class HazelcastParametersRunnerFactory implements ParametersRunnerFactory {

    @Override
    public Runner createRunnerForTestWithParameters(TestWithParameters test) throws InitializationError {
        Class<?> testClass = test.getTestClass().getJavaClass();
        Object[] parameters = test.getParameters().toArray();
        String testName = test.getName();

        return getClassRunner(testClass, parameters, testName);
    }

    protected abstract Runner getClassRunner(Class<?> testClass, Object[] parameters, String testName) throws InitializationError;
}
